#pragma once

#include "const.h"

/** 本库用于写日志 */

using std::ofstream;
using std::string;
class Log
{
private:
    ofstream log_fd;

    /******************************************
     * 返回日志头
     * @param who 提示, 分辨是哪个进程/机器写日志
     * @return "时:分:秒 [who]"
     */
    static string genHead(const string &);
    static string genHead(uint);

public:
    /******************************************
     * 向Server指定端口发起TCP连接
     * @param binary 二进制串
     * @param data_len 二进制串长度
     * @return 转化结果
     */
    static string binaryToLog(const char *, int);

public:
    ~Log();

    /******************************************
     * 打开日志文件
     * @param file_path 文件路径
     * @param do_del_log 是否清除以前的日志
     */
    int openFile(const char *, bool);

    /******************************************
     * 向日志写一句带时间和作者的提示
     * @param who 分辨是哪个进程/机器写日志
     * @param prompt 提示
     */
    int writePrompt(const string &, const string &);
    int writePrompt(uint, const string &);

    /******************************************
     * 向日志写一句不带修饰的内容
     * @param content
     */
    int writeRaw(const string &);
    int writeRaw(const char *);
};

// 全局日志文件
extern Log ts_log;